package com.gohi.main.user.service.impl;


import java.util.ArrayList;
import java.util.List;

import org.springframework.transaction.TransactionException;

import com.gohi.core.service.impl.DefaultService;
import com.gohi.core.web.paging.PagingBean;

import com.gohi.main.user.hbm.WxFensi;
import com.gohi.main.user.service.IWxFensiService;
import com.gohi.main.util.Utils;

/**
 * <B>微信粉丝表</B>
 * @author 肖得明<br>
 * 2014年12月17日13时32分37秒
 */
public class WxFensiServiceImpl extends DefaultService<WxFensi, String> implements IWxFensiService {


	

	@Override
	public WxFensi saveOrUpdate(WxFensi bean) throws TransactionException {
		return this.getDAO().save(bean);
	}

	@Override
	public void deleteById(String id) throws TransactionException {
		this.getDAO().remove(new WxFensi(), id);
	}
	
	@Override
	public WxFensi getById(String id) throws TransactionException {
		return this.getDAO().getByPK(new WxFensi(), id);
	}

	@Override
	public List<WxFensi> select(WxFensi bean)
			throws TransactionException {
		StringBuffer hql = new StringBuffer("from WxFensi where 1=1 ");
		ArrayList<Object> objs = new ArrayList<Object>();
		if(bean!=null){
			            if(!Utils.show(bean.getId()).equals("")){
                hql.append(" and id=?");
                objs.add(bean.getId());
            }
            //所属那个公众号的
            if(!Utils.show(bean.getParid()).equals("")){
                hql.append(" and parid=?");
                objs.add(bean.getParid());
            }
            //唯一ID
            if(!Utils.show(bean.getOpenid()).equals("")){
                hql.append(" and openid=?");
                objs.add(bean.getOpenid());
            }
            //用户是否订阅该公众号标识
            if(!Utils.show(bean.getSubscribeStatus()).equals("")){
                hql.append(" and subscribeStatus=?");
                objs.add(bean.getSubscribeStatus());
            }
            //用户关注时间
            if(!Utils.show(bean.getSubscribeTime()).equals("")){
                hql.append(" and subscribeTime=?");
                objs.add(bean.getSubscribeTime());
            }
            //用户的昵称
            if(!Utils.show(bean.getNickname()).equals("")){
                hql.append(" and nickname=?");
                objs.add(bean.getNickname());
            }
            //性别 1男 0位置 2时是女性
            if(!Utils.show(bean.getSex()).equals("")){
                hql.append(" and sex=?");
                objs.add(bean.getSex());
            }
            //用户的语言
            if(!Utils.show(bean.getLanguage()).equals("")){
                hql.append(" and language=?");
                objs.add(bean.getLanguage());
            }
            if(!Utils.show(bean.getCountry()).equals("")){
                hql.append(" and country=?");
                objs.add(bean.getCountry());
            }
            //用户所在省份
            if(!Utils.show(bean.getProvince()).equals("")){
                hql.append(" and province=?");
                objs.add(bean.getProvince());
            }
            //用户所在城市
            if(!Utils.show(bean.getCity()).equals("")){
                hql.append(" and city=?");
                objs.add(bean.getCity());
            }
            //用户头像
            if(!Utils.show(bean.getHeadimgurl()).equals("")){
                hql.append(" and headimgurl=?");
                objs.add(bean.getHeadimgurl());
            }
            if(!Utils.show(bean.getCreateTime()).equals("")){
                hql.append(" and createTime=?");
                objs.add(bean.getCreateTime());
            }
            if(!Utils.show(bean.getStatus()).equals("")){
                hql.append(" and status=?");
                objs.add(bean.getStatus());
            }
            //备注
            if(!Utils.show(bean.getRemark()).equals("")){
                hql.append(" and remark=?");
                objs.add(bean.getRemark());
            }

		}
	     hql.append(" order by  createTime desc");
		return this.getDAO().findByHql(hql.toString(), objs.toArray());
	}

	@Override
	public List<WxFensi> select(WxFensi bean, PagingBean pb)
			throws TransactionException {
		StringBuffer hql = new StringBuffer("from WxFensi where 1=1 ");
		ArrayList<Object> objs = new ArrayList<Object>();
		if(bean!=null){
			            if(!Utils.show(bean.getId()).equals("")){
                hql.append(" and id=?");
                objs.add(bean.getId());
            }
            //所属那个公众号的
            if(!Utils.show(bean.getParid()).equals("")){
                hql.append(" and parid=?");
                objs.add(bean.getParid());
            }
            //唯一ID
            if(!Utils.show(bean.getOpenid()).equals("")){
                hql.append(" and openid=?");
                objs.add(bean.getOpenid());
            }
            //用户是否订阅该公众号标识
            if(!Utils.show(bean.getSubscribeStatus()).equals("")){
                hql.append(" and subscribeStatus=?");
                objs.add(bean.getSubscribeStatus());
            }
            //用户关注时间
            if(!Utils.show(bean.getSubscribeTime()).equals("")){
                hql.append(" and subscribeTime=?");
                objs.add(bean.getSubscribeTime());
            }
            //用户的昵称
            if(!Utils.show(bean.getNickname()).equals("")){
                hql.append(" and nickname like '%"+bean.getNickname()+"%'");
        
            }
            //性别 1男 0位置 2时是女性
            if(!Utils.show(bean.getSex()).equals("")){
                hql.append(" and sex=?");
                objs.add(bean.getSex());
            }
            //用户的语言
            if(!Utils.show(bean.getLanguage()).equals("")){
                hql.append(" and language=?");
                objs.add(bean.getLanguage());
            }
            if(!Utils.show(bean.getCountry()).equals("")){
                hql.append(" and country=?");
                objs.add(bean.getCountry());
            }
            //用户所在省份
            if(!Utils.show(bean.getProvince()).equals("")){
                hql.append(" and province=?");
                objs.add(bean.getProvince());
            }
            //用户所在城市
            if(!Utils.show(bean.getCity()).equals("")){
                hql.append(" and city=?");
                objs.add(bean.getCity());
            }
            //用户头像
            if(!Utils.show(bean.getHeadimgurl()).equals("")){
                hql.append(" and headimgurl=?");
                objs.add(bean.getHeadimgurl());
            }
            if(!Utils.show(bean.getCreateTime()).equals("")){
                hql.append(" and createTime=?");
                objs.add(bean.getCreateTime());
            }
            if(!Utils.show(bean.getStatus()).equals("")){
                hql.append(" and status=?");
                objs.add(bean.getStatus());
            }
            //备注
            if(!Utils.show(bean.getRemark()).equals("")){
                hql.append(" and remark=?");
                objs.add(bean.getRemark());
            }
       
		}
	     hql.append(" order by  createTime desc");
		return this.getDAO().findByHql(hql.toString(), objs.toArray(), pb);
	}

	@Override
	public void updateSate(String uuid) throws TransactionException {
		// TODO Auto-generated method stub
		WxFensi wx = this.getById(uuid);
		if(wx!=null){
			wx.setSubscribeStatus(0);
			this.saveOrUpdate(wx);
		}
	}



}
